<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.9: http://docutils.sourceforge.net/" />
<title>Guía de creación de mods</title>
<style type="text/css">

/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7056 2011-06-17 10:50:48Z milde $
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.

See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/

/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
  border: 0 }

table.borderless td, table.borderless th {
  /* Override padding for "table.docutils td" with "! important".
     The right padding separates the table cells. */
  padding: 0 0.5em 0 0 ! important }

.first {
  /* Override more specific margin styles with "! important". */
  margin-top: 0 ! important }

.last, .with-subtitle {
  margin-bottom: 0 ! important }

.hidden {
  display: none }

a.toc-backref {
  text-decoration: none ;
  color: black }

blockquote.epigraph {
  margin: 2em 5em ; }

dl.docutils dd {
  margin-bottom: 0.5em }

object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
  overflow: hidden;
}

/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
  font-weight: bold }
*/

div.abstract {
  margin: 2em 5em }

div.abstract p.topic-title {
  font-weight: bold ;
  text-align: center }

div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
  margin: 2em ;
  border: medium outset ;
  padding: 1em }

div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
  font-weight: bold ;
  font-family: sans-serif }

div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
  color: red ;
  font-weight: bold ;
  font-family: sans-serif }

/* Uncomment (and remove this text!) to get reduced vertical space in
   compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
  margin-bottom: 0.5em }

div.compound .compound-last, div.compound .compound-middle {
  margin-top: 0.5em }
*/

div.dedication {
  margin: 2em 5em ;
  text-align: center ;
  font-style: italic }

div.dedication p.topic-title {
  font-weight: bold ;
  font-style: normal }

div.figure {
  margin-left: 2em ;
  margin-right: 2em }

div.footer, div.header {
  clear: both;
  font-size: smaller }

div.line-block {
  display: block ;
  margin-top: 1em ;
  margin-bottom: 1em }

div.line-block div.line-block {
  margin-top: 0 ;
  margin-bottom: 0 ;
  margin-left: 1.5em }

div.sidebar {
  margin: 0 0 0.5em 1em ;
  border: medium outset ;
  padding: 1em ;
  background-color: #ffffee ;
  width: 40% ;
  float: right ;
  clear: right }

div.sidebar p.rubric {
  font-family: sans-serif ;
  font-size: medium }

div.system-messages {
  margin: 5em }

div.system-messages h1 {
  color: red }

div.system-message {
  border: medium outset ;
  padding: 1em }

div.system-message p.system-message-title {
  color: red ;
  font-weight: bold }

div.topic {
  margin: 2em }

h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
  margin-top: 0.4em }

h1.title {
  text-align: center }

h2.subtitle {
  text-align: center }

hr.docutils {
  width: 75% }

img.align-left, .figure.align-left, object.align-left {
  clear: left ;
  float: left ;
  margin-right: 1em }

img.align-right, .figure.align-right, object.align-right {
  clear: right ;
  float: right ;
  margin-left: 1em }

img.align-center, .figure.align-center, object.align-center {
  display: block;
  margin-left: auto;
  margin-right: auto;
}

.align-left {
  text-align: left }

.align-center {
  clear: both ;
  text-align: center }

.align-right {
  text-align: right }

/* reset inner alignment in figures */
div.align-right {
  text-align: inherit }

/* div.align-center * { */
/*   text-align: left } */

ol.simple, ul.simple {
  margin-bottom: 1em }

ol.arabic {
  list-style: decimal }

ol.loweralpha {
  list-style: lower-alpha }

ol.upperalpha {
  list-style: upper-alpha }

ol.lowerroman {
  list-style: lower-roman }

ol.upperroman {
  list-style: upper-roman }

p.attribution {
  text-align: right ;
  margin-left: 50% }

p.caption {
  font-style: italic }

p.credits {
  font-style: italic ;
  font-size: smaller }

p.label {
  white-space: nowrap }

p.rubric {
  font-weight: bold ;
  font-size: larger ;
  color: maroon ;
  text-align: center }

p.sidebar-title {
  font-family: sans-serif ;
  font-weight: bold ;
  font-size: larger }

p.sidebar-subtitle {
  font-family: sans-serif ;
  font-weight: bold }

p.topic-title {
  font-weight: bold }

pre.address {
  margin-bottom: 0 ;
  margin-top: 0 ;
  font: inherit }

pre.literal-block, pre.doctest-block, pre.math {
  margin-left: 2em ;
  margin-right: 2em }

span.classifier {
  font-family: sans-serif ;
  font-style: oblique }

span.classifier-delimiter {
  font-family: sans-serif ;
  font-weight: bold }

span.interpreted {
  font-family: sans-serif }

span.option {
  white-space: nowrap }

span.pre {
  white-space: pre }

span.problematic {
  color: red }

span.section-subtitle {
  /* font-size relative to parent (h1..h6 element) */
  font-size: 80% }

table.citation {
  border-left: solid 1px gray;
  margin-left: 1px }

table.docinfo {
  margin: 2em 4em }

table.docutils {
  margin-top: 0.5em ;
  margin-bottom: 0.5em }

table.footnote {
  border-left: solid 1px black;
  margin-left: 1px }

table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
  padding-left: 0.5em ;
  padding-right: 0.5em ;
  vertical-align: top }

table.docutils th.field-name, table.docinfo th.docinfo-name {
  font-weight: bold ;
  text-align: left ;
  white-space: nowrap ;
  padding-left: 0 }

h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
  font-size: 100% }

ul.auto-toc {
  list-style-type: none }

</style>
</head>
<body>
<div class="document" id="modding-guide">
<h1 class="title">Guía de creación de mods</h1>

<div class="contents topic" id="contents">
<p class="topic-title first">Contenidos</p>
<ul class="simple">
<li><a class="reference internal" href="#mods" id="id1">mods</a><ul>
<li><a class="reference internal" href="#clear" id="id2">clear</a></li>
<li><a class="reference internal" href="#is-a" id="id3">is_a</a></li>
</ul>
</li>
<li><a class="reference internal" href="#the-rules" id="id4">Las reglas</a><ul>
<li><a class="reference internal" href="#unit-properties" id="id5">Propiedades de las unidades</a><ul>
<li><a class="reference internal" href="#storage-bonus" id="id6">storage_bonus</a></li>
</ul>
</li>
<li><a class="reference internal" href="#ability-properties" id="id7">propiedades de habilidad</a><ul>
<li><a class="reference internal" href="#effect" id="id8">effect</a><ul>
<li><a class="reference internal" href="#apply-bonus" id="id9">apply_bonus</a></li>
<li><a class="reference internal" href="#bonus" id="id10">bonus</a></li>
<li><a class="reference internal" href="#conversion" id="id11">conversion</a></li>
<li><a class="reference internal" href="#raise-dead" id="id12">raise_dead</a></li>
<li><a class="reference internal" href="#recall" id="id13">recall</a></li>
<li><a class="reference internal" href="#resurrection" id="id14">resurrection</a></li>
<li><a class="reference internal" href="#summon" id="id15">summon</a></li>
<li><a class="reference internal" href="#teleportation" id="id16">teleportation</a></li>
</ul>
</li>
<li><a class="reference internal" href="#effect-target" id="id17">effect_target</a></li>
<li><a class="reference internal" href="#effect-range" id="id18">effect_range</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="mods">
<h1><a class="toc-backref" href="#id1">mods</a></h1>
<p>Es posible cambiar las reglas y el aspecto del juego utilizando mods.</p>
<p>Un mod es una carpeta que puede contener los ficheros rules.txt, ai.txt, ui (y sus versiones locales). La estructura de árbol es la misma que la de la carpeta  &quot;res&quot;.</p>
<p>Los mods se guardan en la carpeta &quot;mods&quot; dentro de la carpeta principal del juego o dentro de la carpeta del usuario. Para activar un mod es necesario incluir una referencia al mismo en el parámetro  &quot;mods =&quot; en el fichero SoundRTS.ini.
Por ejemplo: mods = soundpack,mimod,my_otro_mod</p>
<p>El fichero  rules.txt del mod modificará parte del contenido del fichero por defecto. Por ejemplo, un fichero rules.txt que contenga estas dos líneas: <br>
&quot;def peasant&quot; y<br>
&quot;decay 20&quot;<br>
provocará que todos los peones desaparezcan tras 20 segundos.</p>
<div class="section" id="clear">
<h2><a class="toc-backref" href="#id2">clear</a></h2>
<p>Para sustituir por completo los ficheros rules.txt o style.txt en lugar de modificar parte de los mismos, utilice el comando &quot;clear&quot; al principio del fichero. Esto no funciona en  ai.txt,
aunque tampoco es necesario, porque en AI.tx el comando def reescribe la definición de la AI (inteligencia artificial).</p>
</div>
<div class="section" id="is-a">
<h2><a class="toc-backref" href="#id3">is_a</a></h2>
<p>Mientras que en style.txt &quot;is_a&quot; es una forma de heredar todas las propiedades de otra definición,
en rules.txt, &quot;is_a&quot; también se utiliza para asegurarse de que una fortaleza o un castillo permiten hacer lo que se podía hacer con un ayuntamiento.</p>
<p>Nota: Los árboles de herencia de style.txt y de  rules.txt no es necesario que sean iguales.</p>
</div>
</div>
<div class="section" id="the-rules">
<h1><a class="toc-backref" href="#id4">Las reglas</a></h1>
<p>Desde SoundRTS 1.1, las reglas del juego se almacenan en un fichero llamado rules.txt.</p>
<div class="section" id="unit-properties">
<h2><a class="toc-backref" href="#id5">Propiedades de las unidades</a></h2>
<p>Nota: una unidad también puede ser un edificio.</p>
<div class="section" id="storage-bonus">
<h3><a class="toc-backref" href="#id6">storage_bonus</a></h3>
<p><cite>storage_bonus &lt;bonus para el recurso 0&gt; &lt;bonus para el recurso 1&gt; ...</cite></p>
<p>por ejemplo, &quot;storage_bonus 0 1&quot; provocará un bonus de +1 para la madera (el segundo tipo de recurso).</p>
<p>El bonus va a parar al propietario de la unidad.
El bonus no se acumula: sólo se aplicará el bonus más alto para cada tipo de recurso.</p>
</div>
</div>
<div class="section" id="ability-properties">
<h2><a class="toc-backref" href="#id7">Propiedades de habilidad</a></h2>
<div class="section" id="effect">
<h3><a class="toc-backref" href="#id8">effect</a></h3>
<p><cite>effect &lt;Tipo de efecto&gt; [parámetros]</cite></p>
<p>Valor por defecto: (ninguno)</p>
<p>Un efecto (effect) es una propiedad de una habilidad. Cuando una unidad emplea una de sus habilidades, se desencadena el efecto correspondiente, salvo en el caso de que no se haya especificado ningún efecto para esa habilidad.</p>
<p>Algunas propiedades adicionales pueden modificar un efecto: <a class="reference internal" href="#effect-target">effect_target</a> y <a class="reference internal" href="#effect-range">effect_range</a>.</p>
<div class="section" id="apply-bonus">
<h4><a class="toc-backref" href="#id9">apply_bonus</a></h4>
<p><cite>effect apply_bonus &lt;nombre de la propiedad&gt;</cite></p>
<p>Incrementa la propiedad de las unidades afectadas. El valor a incrementar se especifica en las unidades, en una propiedad con el nombre  &quot;&lt;Nombre de propiedad&gt;_bonus&quot;.
Por ejemplo, &quot;effect apply_bonus damage&quot; buscará una propiedad llamada &quot;damage_bonus&quot; en la definición de cada una de las unidades afectadas.
De esta manera, diferentes unidades que se benefician de una misma mejora, pueden tener bonus distintos.</p>
</div>
<div class="section" id="bonus">
<h4><a class="toc-backref" href="#id10">bonus</a></h4>
<p><cite>effect bonus &lt;nombre de propiedad&gt; &lt;valor&gt;</cite></p>
<p>Incrementa en el balor especificado la propiedad de las unidades afectadas.</p>
<p>Al menos las siguientes propiedades deberían funcionar: damage (daño), armor (armadura), range (alcance), heal_level (nivel de curación), speed (velocidad), hp_max (puntos de golpe máximos) (aunque Las unidades antiguas no tendrán sus puntos de golpe HP actualizados a hp_max).<br>
food_cost (coste de las raciones)y food_provided (raciones suministradas) probablemente no funcionan de manera correcta.</p>
</div>
<div class="section" id="conversion">
<h4><a class="toc-backref" href="#id11">conversion</a></h4>
<p><cite>effect conversion</cite> (sin parámetros)</p>
<p>Cambia a la unidad objetivo al bando del lanzador  de la conversión.</p>
<p>Si el objetivo de la conversión no es un enemigo del lanzador, no ocurre nada.</p>
<p>Valores permitidos para las propiedades relacionadas:</p>
<ul class="simple">
<li>effect_target: ask (preguntar)</li>
<li>effect_range: square (casilla), nearby(cercanas), anywhere(en cualquier lugar)</li>
</ul>
<p><strong>Por Hacer: añadir un &lt;límite&gt; de manera que se seleccionen las unidades de la casilla fijada como objetivo (en lugar de tener que fijar como objetivo una unidad)</strong></p>
</div>
<div class="section" id="raise-dead">
<h4><a class="toc-backref" href="#id12">raise_dead</a></h4>
<p><cite>effect raise_dead &lt;Tiempo de vida(en segundos)&gt; &lt;tipo y número de unidades&gt;</cite></p>
<p>Crea las unidades requeridas en la casilla objetivo a partir de los cadáveres que haya en la misma casilla, en el orden de la lista de unidades. Si no hay suficientes cadáveres,no se crearán las unidades del final de la lista. Las unidades desaparecerán tras &lt;tiempo de vida&gt; segundos, a no ser que &lt;tiempo de vida&gt; se establezca a  0.</p>
<p>Si no hay ningún cadáver en la casilla objetivo, no se ejecutará la orden.</p>
<p>Valores permitidos para las propiedades relacionadas:</p>
<ul class="simple">
<li>effect_target: self (la misma), ask (preguntar), random (aleatoria)</li>
<li>effect_range: square (casilla), nearby (cercanas), anywhere (cualquier lugar)</li>
</ul>
</div>
<div class="section" id="recall">
<h4><a class="toc-backref" href="#id13">recall</a></h4>
<p><cite>effect recall</cite> (sin parámetros)</p>
<p>Similar a teletransporte, teletransporta las unidades del jugador desde la casilla fijada como objetivo  hasta la casilla del lanzador de la orden. Los edificios no son afectados. Las unidades aliadas tampoco se ven afectadas.</p>
<p>Si no hay unidades en la casilla objetivo, no se ejecutará la orden.</p>
<p>Valores permitidos para las propiedades relacionadas:</p>
<ul class="simple">
<li>effect_target: ask (preguntar), random (aleatorio)</li>
<li>effect_range: nearby (cercanas), anywhere (en cualquier lugar)</li>
</ul>
</div>
<div class="section" id="resurrection">
<h4><a class="toc-backref" href="#id14">resurrection</a></h4>
<p><cite>effect resurrection &lt;límite&gt;</cite></p>
<p>Resucita los cadáveres del ejército del lanzador de la orden que estén caídos en la casilla fijada como objetivo, hasta un máximo de &lt;límite&gt; unidades resucitadas. Los cadáveres más antiguos se resucitan primero. Los puntos de vida recuperados serán un tercio del máximo.</p>
<p>Si en la casilla objetivo no hay ningún cadáver del ejército del lanzador, no se ejecutará la orden.</p>
<p>Valores permitidos para las propiedades relacionadas:</p>
<ul class="simple">
<li>effect_target: self (la misma), ask (preguntar), random (aleatoria)</li>
<li>effect_range: square (casilla), nearby (cercanas), anywhere (cualquier lugar)</li>
</ul>
</div>
<div class="section" id="summon">
<h4><a class="toc-backref" href="#id15">summon</a></h4>
<p><cite>effect summon &lt;tiempo de vida (en segundos)&gt; &lt;tipo y número de unidades&gt;</cite></p>
<p>Crea las unidades requeridas en la casilla objetivo, y las añade al ejército del lanzador. Las unidades invocadas desaparecerán tras  &lt;tiempo de vida&gt; segundos, a no ser que &lt;tiempo de vida&gt; se establezca a 0.</p>
<p>Valores permitidos para las propiedades relacionadas:</p>
<ul class="simple">
<li>effect_target: self (la misma), ask (preguntar), random (aleatoria)</li>
<li>effect_range: square (casilla), nearby (cercanas), anywhere (en cualquier lugar)</li>
</ul>
</div>
<div class="section" id="teleportation">
<h4><a class="toc-backref" href="#id16">teleportation</a></h4>
<p><cite>effect teleportation</cite> (sin parámetros)</p>
<p>Mueve las unidades del jugador que estén en la casilla del lanzador de la orden hasta la casilla fijada como objetivo. Los edificios no son afectados. Las unidades aliadas tampoco se ven afectadas.</p>
<p>Si el destino es el mismo que la casilla donde está el lanzador de la orden, no se hará nada.</p>
<p>Valores permitidos para las propiedades relacionadas:</p>
<ul class="simple">
<li>effect_target: ask (preguntar), random (aleatorio)</li>
<li>effect_range: nearby (cercanas), anywhere (en cualquier lugar)</li>
</ul>
</div>
</div>
<div class="section" id="effect-target">
<h3><a class="toc-backref" href="#id17">effect_target</a></h3>
<p><cite>effect_target &lt;método de selección&gt;</cite></p>
<p>Determina cómo se seleccionará el objetivo del efecto.</p>
<p>Valor por defecto: self (misma)</p>
<p>Valores posibles:</p>
<ul class="simple">
<li>self (misma): El objetivo será el lanzador (o la casilla donde está el lanzador si el objetivo debe ser un lugar)</li>
<li>ask (preguntar): El interfaz de usuario preguntará por el objetivo.</li>
<li>random (aleatorio): El juego elegirá una casilla aleatoria como objetivo</li>
</ul>
</div>
<div class="section" id="effect-range">
<h3><a class="toc-backref" href="#id18">effect_range</a></h3>
<p><cite>effect_range &lt;distancia&gt;</cite></p>
<p>Determina la distancia entre el lanzador y el objetivo.</p>
<p>Valor por defecto: square (casilla)</p>
<p>Valores posibles:</p>
<ul class="simple">
<li>square (casilla): deben estar en la misma casilla</li>
<li>nearby (cercanas): deben estar en una casilla adyacente o en la misma casilla</li>
<li>anywhere (en cualquier lugar): se permite cualquier distancia</li>
</ul>
<p>Si la distancia actual es mayor de la requerida, el lanzador intentará moverse a un lugar más cercano y usar la habilidad desde ahí.</p>
</div>
</div>
</div>
</div>
</body>
</html>
